import { app, $app } from '../../../app/weapps-api';
import { $page, $w } from '../../../pages/index/api';
/**
 * 
 * 可通过 $page 获取或修改当前页面的 变量 状态 handler lifecycle 等信息
 * 可通过 app 获取或修改全局应用的 变量 状态 等信息
 * 具体可以console.info 在编辑器Console面板查看更多信息
 * 注意：该方法仅在所属的页面有效
 * 如果需要 async-await，请修改成 export default async function() {}
 * 帮助文档 https://cloud.tencent.com/document/product/1301/57912
 **/

/**
 * @param {Object} event - 事件对象
 * @param {string} event.type - 事件名
 * @param {any} event.detail - 事件携带自定义数据
 *
 * @param {Object} data
 * @param {any} data.target - 获取事件传参的数据
 **/
export default async function ({ event, data }) {
  console.log(event.detail)
  // 订单信息
  const orderInfo = event.detail
  // 下单结果
  const orderResult = await $w.cloud.callFunction({
    // 云函数名称
    name: 'wxpayFunctions',
    data: {
      // 调用云函数中的下单方法
      type: 'wxpay_order',
      // 业务其他参数...
      ...orderInfo
    }
  })
  // console.log('下单结果: ', orderResult);
  const paymentData = orderResult.result?.data;
  // 唤起微信支付组件，完成支付
  return new Promise((resolve, reject) => {
    wx.requestPayment({
      timeStamp: paymentData?.timeStamp,
      nonceStr: paymentData?.nonceStr,
      package: paymentData?.packageVal,
      paySign: paymentData?.paySign,
      signType: 'RSA', // 该参数为固定值
      success(res) {
        // 支付成功回调，实现自定义的业务逻辑
        resolve(orderInfo._id)
      },
      fail(err) {
        // 支付失败回调
        reject(orderInfo._id)
      },
    });
  })
}